//===----------------------------------------------------------------------===//
//
// This source file is part of the Soto for AWS open source project
//
// Copyright (c) 2017-2022 the Soto project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of Soto project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//

// THIS FILE IS AUTOMATICALLY GENERATED by https://github.com/soto-project/soto-codegenerator.
// DO NOT EDIT.

#if compiler(>=5.5.2) && canImport(_Concurrency)

import SotoCore

@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
extension ChimeSDKVoice {
    // MARK: Async API Calls

    public func associatePhoneNumbersWithVoiceConnector(_ input: AssociatePhoneNumbersWithVoiceConnectorRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> AssociatePhoneNumbersWithVoiceConnectorResponse {
        return try await self.client.execute(operation: "AssociatePhoneNumbersWithVoiceConnector", path: "/voice-connectors/{VoiceConnectorId}?operation=associate-phone-numbers", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func associatePhoneNumbersWithVoiceConnectorGroup(_ input: AssociatePhoneNumbersWithVoiceConnectorGroupRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> AssociatePhoneNumbersWithVoiceConnectorGroupResponse {
        return try await self.client.execute(operation: "AssociatePhoneNumbersWithVoiceConnectorGroup", path: "/voice-connector-groups/{VoiceConnectorGroupId}?operation=associate-phone-numbers", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func batchDeletePhoneNumber(_ input: BatchDeletePhoneNumberRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> BatchDeletePhoneNumberResponse {
        return try await self.client.execute(operation: "BatchDeletePhoneNumber", path: "/phone-numbers?operation=batch-delete", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func batchUpdatePhoneNumber(_ input: BatchUpdatePhoneNumberRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> BatchUpdatePhoneNumberResponse {
        return try await self.client.execute(operation: "BatchUpdatePhoneNumber", path: "/phone-numbers?operation=batch-update", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func createPhoneNumberOrder(_ input: CreatePhoneNumberOrderRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreatePhoneNumberOrderResponse {
        return try await self.client.execute(operation: "CreatePhoneNumberOrder", path: "/phone-number-orders", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func createProxySession(_ input: CreateProxySessionRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateProxySessionResponse {
        return try await self.client.execute(operation: "CreateProxySession", path: "/voice-connectors/{VoiceConnectorId}/proxy-sessions", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func createSipMediaApplication(_ input: CreateSipMediaApplicationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateSipMediaApplicationResponse {
        return try await self.client.execute(operation: "CreateSipMediaApplication", path: "/sip-media-applications", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func createSipMediaApplicationCall(_ input: CreateSipMediaApplicationCallRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateSipMediaApplicationCallResponse {
        return try await self.client.execute(operation: "CreateSipMediaApplicationCall", path: "/sip-media-applications/{SipMediaApplicationId}/calls", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func createSipRule(_ input: CreateSipRuleRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateSipRuleResponse {
        return try await self.client.execute(operation: "CreateSipRule", path: "/sip-rules", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func createVoiceConnector(_ input: CreateVoiceConnectorRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateVoiceConnectorResponse {
        return try await self.client.execute(operation: "CreateVoiceConnector", path: "/voice-connectors", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func createVoiceConnectorGroup(_ input: CreateVoiceConnectorGroupRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> CreateVoiceConnectorGroupResponse {
        return try await self.client.execute(operation: "CreateVoiceConnectorGroup", path: "/voice-connector-groups", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func deletePhoneNumber(_ input: DeletePhoneNumberRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "DeletePhoneNumber", path: "/phone-numbers/{PhoneNumberId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func deleteProxySession(_ input: DeleteProxySessionRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "DeleteProxySession", path: "/voice-connectors/{VoiceConnectorId}/proxy-sessions/{ProxySessionId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func deleteSipMediaApplication(_ input: DeleteSipMediaApplicationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "DeleteSipMediaApplication", path: "/sip-media-applications/{SipMediaApplicationId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func deleteSipRule(_ input: DeleteSipRuleRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "DeleteSipRule", path: "/sip-rules/{SipRuleId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func deleteVoiceConnector(_ input: DeleteVoiceConnectorRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "DeleteVoiceConnector", path: "/voice-connectors/{VoiceConnectorId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func deleteVoiceConnectorEmergencyCallingConfiguration(_ input: DeleteVoiceConnectorEmergencyCallingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "DeleteVoiceConnectorEmergencyCallingConfiguration", path: "/voice-connectors/{VoiceConnectorId}/emergency-calling-configuration", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func deleteVoiceConnectorGroup(_ input: DeleteVoiceConnectorGroupRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "DeleteVoiceConnectorGroup", path: "/voice-connector-groups/{VoiceConnectorGroupId}", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func deleteVoiceConnectorOrigination(_ input: DeleteVoiceConnectorOriginationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "DeleteVoiceConnectorOrigination", path: "/voice-connectors/{VoiceConnectorId}/origination", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func deleteVoiceConnectorProxy(_ input: DeleteVoiceConnectorProxyRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "DeleteVoiceConnectorProxy", path: "/voice-connectors/{VoiceConnectorId}/programmable-numbers/proxy", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func deleteVoiceConnectorStreamingConfiguration(_ input: DeleteVoiceConnectorStreamingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "DeleteVoiceConnectorStreamingConfiguration", path: "/voice-connectors/{VoiceConnectorId}/streaming-configuration", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func deleteVoiceConnectorTermination(_ input: DeleteVoiceConnectorTerminationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "DeleteVoiceConnectorTermination", path: "/voice-connectors/{VoiceConnectorId}/termination", httpMethod: .DELETE, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func deleteVoiceConnectorTerminationCredentials(_ input: DeleteVoiceConnectorTerminationCredentialsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "DeleteVoiceConnectorTerminationCredentials", path: "/voice-connectors/{VoiceConnectorId}/termination/credentials?operation=delete", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func disassociatePhoneNumbersFromVoiceConnector(_ input: DisassociatePhoneNumbersFromVoiceConnectorRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DisassociatePhoneNumbersFromVoiceConnectorResponse {
        return try await self.client.execute(operation: "DisassociatePhoneNumbersFromVoiceConnector", path: "/voice-connectors/{VoiceConnectorId}?operation=disassociate-phone-numbers", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func disassociatePhoneNumbersFromVoiceConnectorGroup(_ input: DisassociatePhoneNumbersFromVoiceConnectorGroupRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> DisassociatePhoneNumbersFromVoiceConnectorGroupResponse {
        return try await self.client.execute(operation: "DisassociatePhoneNumbersFromVoiceConnectorGroup", path: "/voice-connector-groups/{VoiceConnectorGroupId}?operation=disassociate-phone-numbers", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getGlobalSettings(logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetGlobalSettingsResponse {
        return try await self.client.execute(operation: "GetGlobalSettings", path: "/settings", httpMethod: .GET, serviceConfig: self.config, logger: logger, on: eventLoop)
    }

    public func getPhoneNumber(_ input: GetPhoneNumberRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetPhoneNumberResponse {
        return try await self.client.execute(operation: "GetPhoneNumber", path: "/phone-numbers/{PhoneNumberId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getPhoneNumberOrder(_ input: GetPhoneNumberOrderRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetPhoneNumberOrderResponse {
        return try await self.client.execute(operation: "GetPhoneNumberOrder", path: "/phone-number-orders/{PhoneNumberOrderId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getPhoneNumberSettings(logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetPhoneNumberSettingsResponse {
        return try await self.client.execute(operation: "GetPhoneNumberSettings", path: "/settings/phone-number", httpMethod: .GET, serviceConfig: self.config, logger: logger, on: eventLoop)
    }

    public func getProxySession(_ input: GetProxySessionRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetProxySessionResponse {
        return try await self.client.execute(operation: "GetProxySession", path: "/voice-connectors/{VoiceConnectorId}/proxy-sessions/{ProxySessionId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getSipMediaApplication(_ input: GetSipMediaApplicationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSipMediaApplicationResponse {
        return try await self.client.execute(operation: "GetSipMediaApplication", path: "/sip-media-applications/{SipMediaApplicationId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getSipMediaApplicationAlexaSkillConfiguration(_ input: GetSipMediaApplicationAlexaSkillConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSipMediaApplicationAlexaSkillConfigurationResponse {
        return try await self.client.execute(operation: "GetSipMediaApplicationAlexaSkillConfiguration", path: "/sip-media-applications/{SipMediaApplicationId}/alexa-skill-configuration", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getSipMediaApplicationLoggingConfiguration(_ input: GetSipMediaApplicationLoggingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSipMediaApplicationLoggingConfigurationResponse {
        return try await self.client.execute(operation: "GetSipMediaApplicationLoggingConfiguration", path: "/sip-media-applications/{SipMediaApplicationId}/logging-configuration", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getSipRule(_ input: GetSipRuleRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetSipRuleResponse {
        return try await self.client.execute(operation: "GetSipRule", path: "/sip-rules/{SipRuleId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getVoiceConnector(_ input: GetVoiceConnectorRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetVoiceConnectorResponse {
        return try await self.client.execute(operation: "GetVoiceConnector", path: "/voice-connectors/{VoiceConnectorId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getVoiceConnectorEmergencyCallingConfiguration(_ input: GetVoiceConnectorEmergencyCallingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetVoiceConnectorEmergencyCallingConfigurationResponse {
        return try await self.client.execute(operation: "GetVoiceConnectorEmergencyCallingConfiguration", path: "/voice-connectors/{VoiceConnectorId}/emergency-calling-configuration", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getVoiceConnectorGroup(_ input: GetVoiceConnectorGroupRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetVoiceConnectorGroupResponse {
        return try await self.client.execute(operation: "GetVoiceConnectorGroup", path: "/voice-connector-groups/{VoiceConnectorGroupId}", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getVoiceConnectorLoggingConfiguration(_ input: GetVoiceConnectorLoggingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetVoiceConnectorLoggingConfigurationResponse {
        return try await self.client.execute(operation: "GetVoiceConnectorLoggingConfiguration", path: "/voice-connectors/{VoiceConnectorId}/logging-configuration", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getVoiceConnectorOrigination(_ input: GetVoiceConnectorOriginationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetVoiceConnectorOriginationResponse {
        return try await self.client.execute(operation: "GetVoiceConnectorOrigination", path: "/voice-connectors/{VoiceConnectorId}/origination", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getVoiceConnectorProxy(_ input: GetVoiceConnectorProxyRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetVoiceConnectorProxyResponse {
        return try await self.client.execute(operation: "GetVoiceConnectorProxy", path: "/voice-connectors/{VoiceConnectorId}/programmable-numbers/proxy", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getVoiceConnectorStreamingConfiguration(_ input: GetVoiceConnectorStreamingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetVoiceConnectorStreamingConfigurationResponse {
        return try await self.client.execute(operation: "GetVoiceConnectorStreamingConfiguration", path: "/voice-connectors/{VoiceConnectorId}/streaming-configuration", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getVoiceConnectorTermination(_ input: GetVoiceConnectorTerminationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetVoiceConnectorTerminationResponse {
        return try await self.client.execute(operation: "GetVoiceConnectorTermination", path: "/voice-connectors/{VoiceConnectorId}/termination", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func getVoiceConnectorTerminationHealth(_ input: GetVoiceConnectorTerminationHealthRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> GetVoiceConnectorTerminationHealthResponse {
        return try await self.client.execute(operation: "GetVoiceConnectorTerminationHealth", path: "/voice-connectors/{VoiceConnectorId}/termination/health", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func listAvailableVoiceConnectorRegions(logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListAvailableVoiceConnectorRegionsResponse {
        return try await self.client.execute(operation: "ListAvailableVoiceConnectorRegions", path: "/voice-connector-regions", httpMethod: .GET, serviceConfig: self.config, logger: logger, on: eventLoop)
    }

    public func listPhoneNumberOrders(_ input: ListPhoneNumberOrdersRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListPhoneNumberOrdersResponse {
        return try await self.client.execute(operation: "ListPhoneNumberOrders", path: "/phone-number-orders", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func listPhoneNumbers(_ input: ListPhoneNumbersRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListPhoneNumbersResponse {
        return try await self.client.execute(operation: "ListPhoneNumbers", path: "/phone-numbers", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func listProxySessions(_ input: ListProxySessionsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListProxySessionsResponse {
        return try await self.client.execute(operation: "ListProxySessions", path: "/voice-connectors/{VoiceConnectorId}/proxy-sessions", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func listSipMediaApplications(_ input: ListSipMediaApplicationsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListSipMediaApplicationsResponse {
        return try await self.client.execute(operation: "ListSipMediaApplications", path: "/sip-media-applications", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func listSipRules(_ input: ListSipRulesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListSipRulesResponse {
        return try await self.client.execute(operation: "ListSipRules", path: "/sip-rules", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func listSupportedPhoneNumberCountries(_ input: ListSupportedPhoneNumberCountriesRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListSupportedPhoneNumberCountriesResponse {
        return try await self.client.execute(operation: "ListSupportedPhoneNumberCountries", path: "/phone-number-countries", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func listVoiceConnectorGroups(_ input: ListVoiceConnectorGroupsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListVoiceConnectorGroupsResponse {
        return try await self.client.execute(operation: "ListVoiceConnectorGroups", path: "/voice-connector-groups", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func listVoiceConnectorTerminationCredentials(_ input: ListVoiceConnectorTerminationCredentialsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListVoiceConnectorTerminationCredentialsResponse {
        return try await self.client.execute(operation: "ListVoiceConnectorTerminationCredentials", path: "/voice-connectors/{VoiceConnectorId}/termination/credentials", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func listVoiceConnectors(_ input: ListVoiceConnectorsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ListVoiceConnectorsResponse {
        return try await self.client.execute(operation: "ListVoiceConnectors", path: "/voice-connectors", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func putSipMediaApplicationAlexaSkillConfiguration(_ input: PutSipMediaApplicationAlexaSkillConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> PutSipMediaApplicationAlexaSkillConfigurationResponse {
        return try await self.client.execute(operation: "PutSipMediaApplicationAlexaSkillConfiguration", path: "/sip-media-applications/{SipMediaApplicationId}/alexa-skill-configuration", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func putSipMediaApplicationLoggingConfiguration(_ input: PutSipMediaApplicationLoggingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> PutSipMediaApplicationLoggingConfigurationResponse {
        return try await self.client.execute(operation: "PutSipMediaApplicationLoggingConfiguration", path: "/sip-media-applications/{SipMediaApplicationId}/logging-configuration", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func putVoiceConnectorEmergencyCallingConfiguration(_ input: PutVoiceConnectorEmergencyCallingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> PutVoiceConnectorEmergencyCallingConfigurationResponse {
        return try await self.client.execute(operation: "PutVoiceConnectorEmergencyCallingConfiguration", path: "/voice-connectors/{VoiceConnectorId}/emergency-calling-configuration", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func putVoiceConnectorLoggingConfiguration(_ input: PutVoiceConnectorLoggingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> PutVoiceConnectorLoggingConfigurationResponse {
        return try await self.client.execute(operation: "PutVoiceConnectorLoggingConfiguration", path: "/voice-connectors/{VoiceConnectorId}/logging-configuration", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func putVoiceConnectorOrigination(_ input: PutVoiceConnectorOriginationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> PutVoiceConnectorOriginationResponse {
        return try await self.client.execute(operation: "PutVoiceConnectorOrigination", path: "/voice-connectors/{VoiceConnectorId}/origination", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func putVoiceConnectorProxy(_ input: PutVoiceConnectorProxyRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> PutVoiceConnectorProxyResponse {
        return try await self.client.execute(operation: "PutVoiceConnectorProxy", path: "/voice-connectors/{VoiceConnectorId}/programmable-numbers/proxy", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func putVoiceConnectorStreamingConfiguration(_ input: PutVoiceConnectorStreamingConfigurationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> PutVoiceConnectorStreamingConfigurationResponse {
        return try await self.client.execute(operation: "PutVoiceConnectorStreamingConfiguration", path: "/voice-connectors/{VoiceConnectorId}/streaming-configuration", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func putVoiceConnectorTermination(_ input: PutVoiceConnectorTerminationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> PutVoiceConnectorTerminationResponse {
        return try await self.client.execute(operation: "PutVoiceConnectorTermination", path: "/voice-connectors/{VoiceConnectorId}/termination", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func putVoiceConnectorTerminationCredentials(_ input: PutVoiceConnectorTerminationCredentialsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "PutVoiceConnectorTerminationCredentials", path: "/voice-connectors/{VoiceConnectorId}/termination/credentials?operation=put", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func restorePhoneNumber(_ input: RestorePhoneNumberRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> RestorePhoneNumberResponse {
        return try await self.client.execute(operation: "RestorePhoneNumber", path: "/phone-numbers/{PhoneNumberId}?operation=restore", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func searchAvailablePhoneNumbers(_ input: SearchAvailablePhoneNumbersRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> SearchAvailablePhoneNumbersResponse {
        return try await self.client.execute(operation: "SearchAvailablePhoneNumbers", path: "/search?type=phone-numbers", httpMethod: .GET, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func updateGlobalSettings(_ input: UpdateGlobalSettingsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "UpdateGlobalSettings", path: "/settings", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func updatePhoneNumber(_ input: UpdatePhoneNumberRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdatePhoneNumberResponse {
        return try await self.client.execute(operation: "UpdatePhoneNumber", path: "/phone-numbers/{PhoneNumberId}", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func updatePhoneNumberSettings(_ input: UpdatePhoneNumberSettingsRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws {
        return try await self.client.execute(operation: "UpdatePhoneNumberSettings", path: "/settings/phone-number", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func updateProxySession(_ input: UpdateProxySessionRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateProxySessionResponse {
        return try await self.client.execute(operation: "UpdateProxySession", path: "/voice-connectors/{VoiceConnectorId}/proxy-sessions/{ProxySessionId}", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func updateSipMediaApplication(_ input: UpdateSipMediaApplicationRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateSipMediaApplicationResponse {
        return try await self.client.execute(operation: "UpdateSipMediaApplication", path: "/sip-media-applications/{SipMediaApplicationId}", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func updateSipMediaApplicationCall(_ input: UpdateSipMediaApplicationCallRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateSipMediaApplicationCallResponse {
        return try await self.client.execute(operation: "UpdateSipMediaApplicationCall", path: "/sip-media-applications/{SipMediaApplicationId}/calls/{TransactionId}", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func updateSipRule(_ input: UpdateSipRuleRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateSipRuleResponse {
        return try await self.client.execute(operation: "UpdateSipRule", path: "/sip-rules/{SipRuleId}", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func updateVoiceConnector(_ input: UpdateVoiceConnectorRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateVoiceConnectorResponse {
        return try await self.client.execute(operation: "UpdateVoiceConnector", path: "/voice-connectors/{VoiceConnectorId}", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func updateVoiceConnectorGroup(_ input: UpdateVoiceConnectorGroupRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> UpdateVoiceConnectorGroupResponse {
        return try await self.client.execute(operation: "UpdateVoiceConnectorGroup", path: "/voice-connector-groups/{VoiceConnectorGroupId}", httpMethod: .PUT, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }

    public func validateE911Address(_ input: ValidateE911AddressRequest, logger: Logger = AWSClient.loggingDisabled, on eventLoop: EventLoop? = nil) async throws -> ValidateE911AddressResponse {
        return try await self.client.execute(operation: "ValidateE911Address", path: "/emergency-calling/address", httpMethod: .POST, serviceConfig: self.config, input: input, logger: logger, on: eventLoop)
    }
}

// MARK: Paginators

@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
extension ChimeSDKVoice {
    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func listPhoneNumberOrdersPaginator(
        _ input: ListPhoneNumberOrdersRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListPhoneNumberOrdersRequest, ListPhoneNumberOrdersResponse> {
        return .init(
            input: input,
            command: self.listPhoneNumberOrders,
            inputKey: \ListPhoneNumberOrdersRequest.nextToken,
            outputKey: \ListPhoneNumberOrdersResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func listPhoneNumbersPaginator(
        _ input: ListPhoneNumbersRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListPhoneNumbersRequest, ListPhoneNumbersResponse> {
        return .init(
            input: input,
            command: self.listPhoneNumbers,
            inputKey: \ListPhoneNumbersRequest.nextToken,
            outputKey: \ListPhoneNumbersResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func listProxySessionsPaginator(
        _ input: ListProxySessionsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListProxySessionsRequest, ListProxySessionsResponse> {
        return .init(
            input: input,
            command: self.listProxySessions,
            inputKey: \ListProxySessionsRequest.nextToken,
            outputKey: \ListProxySessionsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func listSipMediaApplicationsPaginator(
        _ input: ListSipMediaApplicationsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListSipMediaApplicationsRequest, ListSipMediaApplicationsResponse> {
        return .init(
            input: input,
            command: self.listSipMediaApplications,
            inputKey: \ListSipMediaApplicationsRequest.nextToken,
            outputKey: \ListSipMediaApplicationsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func listSipRulesPaginator(
        _ input: ListSipRulesRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListSipRulesRequest, ListSipRulesResponse> {
        return .init(
            input: input,
            command: self.listSipRules,
            inputKey: \ListSipRulesRequest.nextToken,
            outputKey: \ListSipRulesResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func listVoiceConnectorGroupsPaginator(
        _ input: ListVoiceConnectorGroupsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListVoiceConnectorGroupsRequest, ListVoiceConnectorGroupsResponse> {
        return .init(
            input: input,
            command: self.listVoiceConnectorGroups,
            inputKey: \ListVoiceConnectorGroupsRequest.nextToken,
            outputKey: \ListVoiceConnectorGroupsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func listVoiceConnectorsPaginator(
        _ input: ListVoiceConnectorsRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<ListVoiceConnectorsRequest, ListVoiceConnectorsResponse> {
        return .init(
            input: input,
            command: self.listVoiceConnectors,
            inputKey: \ListVoiceConnectorsRequest.nextToken,
            outputKey: \ListVoiceConnectorsResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }

    /// Return PaginatorSequence for operation.
    ///
    /// - Parameters:
    ///   - input: Input for request
    ///   - logger: Logger used flot logging
    ///   - eventLoop: EventLoop to run this process on
    public func searchAvailablePhoneNumbersPaginator(
        _ input: SearchAvailablePhoneNumbersRequest,
        logger: Logger = AWSClient.loggingDisabled,
        on eventLoop: EventLoop? = nil
    ) -> AWSClient.PaginatorSequence<SearchAvailablePhoneNumbersRequest, SearchAvailablePhoneNumbersResponse> {
        return .init(
            input: input,
            command: self.searchAvailablePhoneNumbers,
            inputKey: \SearchAvailablePhoneNumbersRequest.nextToken,
            outputKey: \SearchAvailablePhoneNumbersResponse.nextToken,
            logger: logger,
            on: eventLoop
        )
    }
}

#endif // compiler(>=5.5.2) && canImport(_Concurrency)
